package com.ledi.guns.modular.ledipay.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.baomidou.mybatisplus.plugins.Page;
import com.ledi.guns.common.persistence.model.Bill;
import com.ledi.guns.common.persistence.model.vo.BillClassSchoolItemVo;
import com.ledi.guns.common.persistence.model.vo.BillVo;
import com.ledi.guns.common.persistence.model.vo.CountTotal;
import com.ledi.guns.common.persistence.model.vo.OnlineVo;
import com.ledi.guns.common.persistence.model.vo.UserVo;
import com.ledi.guns.modular.ledipay.controller.req.bill.AddSchoolUser;
import com.ledi.guns.modular.ledipay.controller.req.bill.Face2FaceBill;
import com.ledi.guns.modular.ledipay.controller.req.bill.FaceQueryBillInfo;
import com.ledi.guns.modular.ledipay.controller.req.bill.ImportBillDetaile;
import com.ledi.guns.modular.ledipay.controller.req.bill.ImportBillDetaileFile;
import com.ledi.guns.modular.ledipay.controller.req.bill.OfflinePayment;
import com.ledi.guns.modular.ledipay.controller.req.bill.QueryBillDetaile;
import com.ledi.guns.modular.ledipay.controller.req.bill.QueryBillInfo;
import com.ledi.guns.modular.ledipay.controller.req.bill.QueryCountTotal;
import com.ledi.guns.modular.ledipay.controller.req.bill.QueryUserInfo;

/**
 * 账单Service
 *
 * @author fengshuonan
 * @Date 2017-11-29 11:02:55
 */
public interface IBillService {

	void downloadBillDetaile(
			HttpServletRequest request, HttpServletResponse response);

	Page<BillVo> findBillList(Page<BillVo> page, QueryBillInfo queryBillInfo);

	List<Bill> getBillName();

	BillVo getBillInfo(Long id);

	CountTotal getCountTotal(QueryCountTotal queryCountTotal);

	Page<UserVo> findSchoolUserList(Page<UserVo> page, QueryUserInfo queryUserInfo);

	void addSchoolUser(AddSchoolUser addSchoolUser);

	void deleteSchoolUser(Integer id);

	UserVo getSchoolUser();

	ImportBillDetaileFile newSendBillDetaile(ImportBillDetaile importBillDetaile);

	void offlinePayment(OfflinePayment offlinePayment);

	void mergeSchoolUser(AddSchoolUser addSchoolUser);

	Page<Bill> findFaceBillList(Page<Bill> page, FaceQueryBillInfo queryBillInfo);

	Long createFaceBillDetaile(Face2FaceBill face2FaceBill, int billType);

	OnlineVo billClassSchoolItemList(Long billId);

	void removeClassBillItem(Long id);

	Long createBillDetill(QueryBillDetaile queryBillDetaile);

	BillClassSchoolItemVo getBillClassSchoolItem(Long billId);

}
